package com.freight.user.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.freight.user.dto.DriverDto;
import com.freight.user.vo.*;

import java.util.HashMap;
import java.util.List;

/**
 * 司机详情信息接口
 *
 * @author huyingtai
 */
public interface IDriverVoService extends IService<UserVo> {

    CarrierDriverVo getCarrierDriverVo(Long userId);

    Page<MsgConsultingListVo> complaintList(Page<MsgConsultingListVo> page, Long userId);




    /**
     * 获取司机个人证件信息
     * @param userId
     */
    DriverInformationVo getDriverInformation(Long userId);

    /**
     * 获取车辆管理人列表
     * @return
     */
    List<ManageUserVo> getManageUserIdUser(String mobile);

    /**
     * 通过用户id获取
     *
     * @param userId
     * @return
     */
    AppointDriverInfoVo getAppointDriverInfoByUserId(Long userId);

    /**
     * 通过用户id获取
     *
     * @param userId
     * @return
     */
    DriverInfoVo getDriverInfoByUserId(Long userId);

    /**
     * 通过用户id获取
     *
     * @param userIds
     * @return
     */
    List<DriverInfoVo> getDriverInfoByUserIds(Long[] userIds);

    /**
     * 通过用户ids获取
     *
     * @param userIds
     * @return AppointDriverInfoVo 公司信息
     */
    List<AppointDriverInfoVo> getAppointDriverInfoByUserIds(Long[] userIds);

    /**
     * 通过用户ids获取
     *
     * @param userIds
     * @return AppointDriverInfoVo 公司信息
     */
    HashMap<Long,AppointDriverInfoVo> getAppointDriverInfoMapByUserIds(Long[] userIds);

    /**
     * 通过用户id获取
     *
     * @param userId
     * @return
     */
    DriverVo getDriverVoByUserId(Long userId);

    /**
     * 通过用户ids获取
     *
     * @param userIds
     * @return AppointDriverInfoVo 公司信息
     */
    List<DriverVo> getDriverVoByUserIds(Long[] userIds);

    /**
     *
     * @param page
     * @param driverDto
     * @return
     */
    Page<DriverDetailInfoVo> getDriverInfo(Page<DriverDetailInfoVo> page, DriverDto driverDto);

    Page<DriverDetailInfoVo> getCompanyDriverInfo(Page<DriverDetailInfoVo> page, DriverDto driverDto);


    /**
     *
     * @param driverDto
     * @return
     */
    List<DriverDetailInfoVo> getDriverInfo(DriverDto driverDto);



    /**
     * 通过用户id获取
     *
     * @param driverDto
     * @return
     */
    List<DriverInfoVo> getDriverBaseInfo(DriverDto driverDto);
}